package cz.cuni.amis.episodic.bayes.experiment;

import cz.cuni.amis.episodic.bayes.utils.chart.AgregateGraphDevice;
import cz.cuni.amis.episodic.bayes.utils.chart.GraphPaintingDevice;
import cz.cuni.amis.episodic.bayes.utils.chart.PdfGraphDevice;
import cz.cuni.amis.episodic.bayes.utils.chart.PngGraphDevice;
import cz.cuni.amis.episodic.lisp.netcreators.AHMEMCreator;
import cz.cuni.amis.episodic.lisp.netcreators.CHMMCreator;
import cz.cuni.amis.episodic.lisp.netcreators.HHMMCreator;
import cz.cuni.amis.episodic.lisp.netcreators.HHMMMurphyPaskin2001Creator;
import cz.cuni.amis.episodic.lisp.netcreators.NetCreator;

import java.io.File;
import java.util.Arrays;
import java.util.List;

/**
 *
 * @author ik
 */
public class Experiment_2a extends LispExperiment {

	@Override
	protected GraphPaintingDevice createGraphDevice(File rootDir) {
		int width = 400;
		int height = 150; 
		return new AgregateGraphDevice(new GraphPaintingDevice[] {
		new PdfGraphDevice(rootDir, width, height),
		new PngGraphDevice(rootDir,  width, height) }, rootDir);
	}
	
    public Experiment_2a() {
        super("2",
        		new File("target/experiments"),		// where to output the experiment results
        		new File("../datasets/2"),	// where to look for training data
        		"XY.txt"); 							// training data filename
        //targets = new String[]{"O", "G1"};
        networkFilenames = new String[]{};
        batchSize = 6; // take six observations as a one example
        createAndLearnNetworks=true;
        drawMemoryCreationGraphs=true;
        performEvolutionExample = true;
        surpriseMaxRangeInEvolutionGraphs = 5.0;

        networkCreators =  Arrays.asList(
                new CHMMCreator(true,1),
                //new HHMMCreator(hiddenStatesNum, false),
                new AHMEMCreator(2,1,true)
                //new AHMEMCreator(3,1,true)
                );
    }
    
    

    public static void main(String[] args) throws Exception {
        Experiment e = new Experiment_2a();
        e.perform();
    }
}
